#pragma once
#include <unordered_map>
#include <google/protobuf/map.h>
#include <cstdlib>
#include <vector>
#include <string>
#include <cstring>
#include <json/json.h>
namespace MY_MQ{
    class Serialization_Util{
        public:
        static void SetArgs(google::protobuf::Map<std::string, std::string>&_args, const std::string& jsonstring)
        {
            Json::Value jsonValue;
            Json::Reader ().parse(jsonstring, jsonValue);
            for(const auto& key:jsonValue.getMemberNames())
            {
                _args[key] = jsonValue[key].asString();
            }
        }
        static std::string serializeMap(const google::protobuf::Map<std::string, std::string> & _args) {
            Json::Value jsonValue;
            Json::FastWriter writer;
            for (const auto& key : _args) {
                jsonValue[key.first] = key.second;
            }
            return writer.write(jsonValue);
        }
        //下面是给unordered_map的序列化
        static std::string serializeMap(const std::unordered_map<std::string, std::string> & _args) {
            Json::Value jsonValue;
            Json::FastWriter writer;
            for (const auto& key : _args) {
                jsonValue[key.first] = key.second;
            }
            return writer.write(jsonValue);
        }
        static void SetArgs(std::unordered_map<std::string, std::string>&_args, const std::string& jsonstring)
        {
            Json::Value jsonValue;
            Json::Reader ().parse(jsonstring, jsonValue);
            for(const auto& key:jsonValue.getMemberNames())
            {
                _args[key] = jsonValue[key].asString();
            }
        }
    };
}

